package com.zx.notification.admin.service;

import com.zx.core.wrapper.ObjectWrapper;
import com.zx.core.wrapper.PageWrapper;
import com.zx.core.wrapper.ResponseWrapper;
import com.zx.notification.common.param.NotificationChannelsConfigParam;
import com.zx.notification.common.vo.NotificationChannelsConfigVO;


/**
 * <p>
 * description: 通知渠道配置管理服务接口 <br>
 * create: 2025-10-17
 * </p>
 *
 * @author zhou  xun
 */
public interface INotificationChannelsConfigService {

    /**
     * 分页查询通知渠道配置列表VO
     *
     * @param notificationChannelsConfigParam 通知渠道配置查询参数
     * @return {@link PageWrapper<  NotificationChannelsConfigVO  >}
     */
    PageWrapper<NotificationChannelsConfigVO> getNotificationChannelsConfigVOListByPage(NotificationChannelsConfigParam notificationChannelsConfigParam);

    /**
     * 新增通知渠道配置
     *
     * @param notificationChannelsConfigParam 通知渠道配置参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper addNotificationChannelsConfig(NotificationChannelsConfigParam notificationChannelsConfigParam);

    /**
     * 编辑通知渠道配置
     *
     * @param notificationChannelsConfigParam 通知渠道配置参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper editNotificationChannelsConfig(NotificationChannelsConfigParam notificationChannelsConfigParam);

    /**
     * 删除通知渠道配置
     *
     * @param notificationChannelsConfigId 通知渠道配置id
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper deleteNotificationChannelsConfig(String notificationChannelsConfigId);

    /**
     * 根据ID查询通知渠道配置信息
     *
     * @param notificationChannelsConfigId 通知渠道配置id
     * @return {@link ObjectWrapper<NotificationChannelsConfigVO>}
     */
    ObjectWrapper<NotificationChannelsConfigVO> selectNotificationChannelsConfigById(String notificationChannelsConfigId);

    /**
     * 更新通知渠道配置状态
     *
     * @param notificationChannelsConfigParam 通知渠道配置参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper updateNotificationChannelsConfigStatus(NotificationChannelsConfigParam notificationChannelsConfigParam);
}